{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "6d742657-8e6a-439d-a65a-3c76e73c8810",
   "metadata": {},
   "source": [
    "# SS GLM "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "5ddc86c8",
   "metadata": {},
   "source": [
    ">The following codes are demos only. It's **NOT for production** due to system security concerns, please **DO NOT** use it directly in production.\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "629aad7f",
   "metadata": {},
   "source": [
    "## Train a model with sklearn "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "d9774618-798e-421f-9be0-4fb954d7c710",
   "metadata": {},
   "source": [
    "Replicate the same experiment from sklearn [tutorial](https://scikit-learn.org/stable/auto_examples/linear_model/plot_tweedie_regression_insurance_claims) on insurance claims using sf ss glm."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "364a380e-9cea-42e3-8ab5-06635df97478",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "from functools import partial\n",
    "from sklearn.datasets import fetch_openml\n",
    "from sklearn.metrics import (\n",
    "    mean_absolute_error,\n",
    "    mean_squared_error,\n",
    "    mean_tweedie_deviance,\n",
    ")\n",
    "\n",
    "\n",
    "def load_mtpl2(n_samples=None):\n",
    "    \"\"\"Fetch the French Motor Third-Party Liability Claims dataset.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    n_samples: int, default=None\n",
    "      number of samples to select (for faster run time). Full dataset has\n",
    "      678013 samples.\n",
    "    \"\"\"\n",
    "    # freMTPL2freq dataset from https://www.openml.org/d/41214\n",
    "    df_freq = fetch_openml(data_id=41214, as_frame=True).data\n",
    "    df_freq[\"IDpol\"] = df_freq[\"IDpol\"].astype(int)\n",
    "    df_freq.set_index(\"IDpol\", inplace=True)\n",
    "\n",
    "    # freMTPL2sev dataset from https://www.openml.org/d/41215\n",
    "    df_sev = fetch_openml(data_id=41215, as_frame=True).data\n",
    "\n",
    "    # sum ClaimAmount over identical IDs\n",
    "    df_sev = df_sev.groupby(\"IDpol\").sum()\n",
    "\n",
    "    df = df_freq.join(df_sev, how=\"left\")\n",
    "    df[\"ClaimAmount\"].fillna(0, inplace=True)\n",
    "\n",
    "    # unquote string fields\n",
    "    for column_name in df.columns[df.dtypes.values == object]:\n",
    "        df[column_name] = df[column_name].str.strip(\"'\")\n",
    "    return df.iloc[:n_samples]\n",
    "\n",
    "\n",
    "def plot_obs_pred(\n",
    "    df,\n",
    "    feature,\n",
    "    weight,\n",
    "    observed,\n",
    "    predicted,\n",
    "    y_label=None,\n",
    "    title=None,\n",
    "    ax=None,\n",
    "    fill_legend=False,\n",
    "):\n",
    "    \"\"\"Plot observed and predicted - aggregated per feature level.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    df : DataFrame\n",
    "        input data\n",
    "    feature: str\n",
    "        a column name of df for the feature to be plotted\n",
    "    weight : str\n",
    "        column name of df with the values of weights or exposure\n",
    "    observed : str\n",
    "        a column name of df with the observed target\n",
    "    predicted : DataFrame\n",
    "        a dataframe, with the same index as df, with the predicted target\n",
    "    fill_legend : bool, default=False\n",
    "        whether to show fill_between legend\n",
    "    \"\"\"\n",
    "    # aggregate observed and predicted variables by feature level\n",
    "    df_ = df.loc[:, [feature, weight]].copy()\n",
    "    df_[\"observed\"] = df[observed] * df[weight]\n",
    "    df_[\"predicted\"] = predicted * df[weight]\n",
    "    df_ = (\n",
    "        df_.groupby([feature])[[weight, \"observed\", \"predicted\"]]\n",
    "        .sum()\n",
    "        .assign(observed=lambda x: x[\"observed\"] / x[weight])\n",
    "        .assign(predicted=lambda x: x[\"predicted\"] / x[weight])\n",
    "    )\n",
    "\n",
    "    ax = df_.loc[:, [\"observed\", \"predicted\"]].plot(style=\".\", ax=ax)\n",
    "    y_max = df_.loc[:, [\"observed\", \"predicted\"]].values.max() * 0.8\n",
    "    p2 = ax.fill_between(\n",
    "        df_.index,\n",
    "        0,\n",
    "        y_max * df_[weight] / df_[weight].values.max(),\n",
    "        color=\"g\",\n",
    "        alpha=0.1,\n",
    "    )\n",
    "    if fill_legend:\n",
    "        ax.legend([p2], [\"{} distribution\".format(feature)])\n",
    "    ax.set(\n",
    "        ylabel=y_label if y_label is not None else None,\n",
    "        title=title if title is not None else \"Train: Observed vs Predicted\",\n",
    "    )\n",
    "\n",
    "\n",
    "def score_estimator(\n",
    "    estimator,\n",
    "    X_train,\n",
    "    X_test,\n",
    "    df_train,\n",
    "    df_test,\n",
    "    target,\n",
    "    weights,\n",
    "    tweedie_powers=None,\n",
    "):\n",
    "    \"\"\"Evaluate an estimator on train and test sets with different metrics\"\"\"\n",
    "\n",
    "    metrics = [\n",
    "        (\"D² explained\", None),  # Use default scorer if it exists\n",
    "        (\"mean abs. error\", mean_absolute_error),\n",
    "        (\"mean squared error\", mean_squared_error),\n",
    "    ]\n",
    "    if tweedie_powers:\n",
    "        metrics += [\n",
    "            (\n",
    "                \"mean Tweedie dev p={:.4f}\".format(power),\n",
    "                partial(mean_tweedie_deviance, power=power),\n",
    "            )\n",
    "            for power in tweedie_powers\n",
    "        ]\n",
    "\n",
    "    res = []\n",
    "    for subset_label, X, df in [\n",
    "        (\"train\", X_train, df_train),\n",
    "        (\"test\", X_test, df_test),\n",
    "    ]:\n",
    "        y, _weights = df[target], df[weights]\n",
    "        for score_label, metric in metrics:\n",
    "            if isinstance(estimator, tuple) and len(estimator) == 2:\n",
    "                # Score the model consisting of the product of frequency and\n",
    "                # severity models.\n",
    "                est_freq, est_sev = estimator\n",
    "                y_pred = est_freq.predict(X) * est_sev.predict(X)\n",
    "            else:\n",
    "                y_pred = estimator.predict(X)\n",
    "\n",
    "            if metric is None:\n",
    "                if not hasattr(estimator, \"score\"):\n",
    "                    continue\n",
    "                score = estimator.score(X, y, sample_weight=_weights)\n",
    "            else:\n",
    "                score = metric(y, y_pred, sample_weight=_weights)\n",
    "\n",
    "            res.append({\"subset\": subset_label, \"metric\": score_label, \"score\": score})\n",
    "\n",
    "    res = (\n",
    "        pd.DataFrame(res)\n",
    "        .set_index([\"metric\", \"subset\"])\n",
    "        .score.unstack(-1)\n",
    "        .round(4)\n",
    "        .loc[:, [\"train\", \"test\"]]\n",
    "    )\n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7e58adee",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zoupeicheng.zpc/miniconda3/envs/py310/lib/python3.10/site-packages/sklearn/datasets/_openml.py:1022: FutureWarning: The default value of `parser` will change from `'liac-arff'` to `'auto'` in 1.4. You can set `parser='auto'` to silence this warning. Therefore, an `ImportError` will be raised from 1.4 if the dataset is dense and pandas is not installed. Note that the pandas parser may return different data types. See the Notes Section in fetch_openml's API doc for details.\n",
      "  warn(\n",
      "/home/zoupeicheng.zpc/miniconda3/envs/py310/lib/python3.10/site-packages/sklearn/datasets/_openml.py:1022: FutureWarning: The default value of `parser` will change from `'liac-arff'` to `'auto'` in 1.4. You can set `parser='auto'` to silence this warning. Therefore, an `ImportError` will be raised from 1.4 if the dataset is dense and pandas is not installed. Note that the pandas parser may return different data types. See the Notes Section in fetch_openml's API doc for details.\n",
      "  warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       ClaimNb  Exposure Area  VehPower  VehAge  DrivAge  BonusMalus VehBrand  \\\n",
      "IDpol                                                                           \n",
      "139.0      1.0      0.75    F       7.0     1.0     61.0        50.0      B12   \n",
      "190.0      1.0      0.14    B      12.0     5.0     50.0        60.0      B12   \n",
      "414.0      1.0      0.14    E       4.0     0.0     36.0        85.0      B12   \n",
      "424.0      2.0      0.62    F      10.0     0.0     51.0       100.0      B12   \n",
      "463.0      1.0      0.31    A       5.0     0.0     45.0        50.0      B12   \n",
      "\n",
      "        VehGas  Density Region  ClaimAmount   PurePremium  Frequency  \\\n",
      "IDpol                                                                  \n",
      "139.0  Regular  27000.0    R11       303.00    404.000000   1.333333   \n",
      "190.0   Diesel     56.0    R25      1981.84  14156.000000   7.142857   \n",
      "414.0  Regular   4792.0    R11      1456.55  10403.928571   7.142857   \n",
      "424.0  Regular  27000.0    R11     10834.00  17474.193548   3.225806   \n",
      "463.0  Regular     12.0    R73      3986.67  12860.225806   3.225806   \n",
      "\n",
      "       AvgClaimAmount  \n",
      "IDpol                  \n",
      "139.0          303.00  \n",
      "190.0         1981.84  \n",
      "414.0         1456.55  \n",
      "424.0         5417.00  \n",
      "463.0         3986.67  \n"
     ]
    }
   ],
   "source": [
    "from sklearn.compose import ColumnTransformer\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.preprocessing import (\n",
    "    FunctionTransformer,\n",
    "    KBinsDiscretizer,\n",
    "    OneHotEncoder,\n",
    "    StandardScaler,\n",
    ")\n",
    "\n",
    "df = load_mtpl2()\n",
    "\n",
    "# Note: filter out claims with zero amount, as the severity model\n",
    "# requires strictly positive target values.\n",
    "df.loc[(df[\"ClaimAmount\"] == 0) & (df[\"ClaimNb\"] >= 1), \"ClaimNb\"] = 0\n",
    "\n",
    "# Correct for unreasonable observations (that might be data error)\n",
    "# and a few exceptionally large claim amounts\n",
    "df[\"ClaimNb\"] = df[\"ClaimNb\"].clip(upper=4)\n",
    "df[\"Exposure\"] = df[\"Exposure\"].clip(upper=1)\n",
    "df[\"ClaimAmount\"] = df[\"ClaimAmount\"].clip(upper=200000)\n",
    "\n",
    "log_scale_transformer = make_pipeline(\n",
    "    FunctionTransformer(func=np.log), StandardScaler()\n",
    ")\n",
    "\n",
    "column_trans = ColumnTransformer(\n",
    "    [\n",
    "        (\n",
    "            \"binned_numeric\",\n",
    "            KBinsDiscretizer(n_bins=10, subsample=int(2e5), random_state=0),\n",
    "            [\"VehAge\", \"DrivAge\"],\n",
    "        ),\n",
    "        (\n",
    "            \"onehot_categorical\",\n",
    "            OneHotEncoder(),\n",
    "            [\"VehBrand\", \"VehPower\", \"VehGas\", \"Region\", \"Area\"],\n",
    "        ),\n",
    "        (\"passthrough_numeric\", \"passthrough\", [\"BonusMalus\"]),\n",
    "        (\"log_scaled_numeric\", log_scale_transformer, [\"Density\"]),\n",
    "    ],\n",
    "    remainder=\"drop\",\n",
    ")\n",
    "X = column_trans.fit_transform(df)\n",
    "\n",
    "# Insurances companies are interested in modeling the Pure Premium, that is\n",
    "# the expected total claim amount per unit of exposure for each policyholder\n",
    "# in their portfolio:\n",
    "df[\"PurePremium\"] = df[\"ClaimAmount\"] / df[\"Exposure\"]\n",
    "\n",
    "# This can be indirectly approximated by a 2-step modeling: the product of the\n",
    "# Frequency times the average claim amount per claim:\n",
    "df[\"Frequency\"] = df[\"ClaimNb\"] / df[\"Exposure\"]\n",
    "df[\"AvgClaimAmount\"] = df[\"ClaimAmount\"] / np.fmax(df[\"ClaimNb\"], 1)\n",
    "\n",
    "with pd.option_context(\"display.max_columns\", 15):\n",
    "    print(df[df.ClaimAmount > 0].head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8d570ce5",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "df_train, df_test, X_train, X_test = train_test_split(df, X, random_state=0)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "fb400b1f-f516-4348-8812-e05a2e8f5e17",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Fit the GLM model (tweedie)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0ffb9d32-4150-41cb-a6e9-65cbccf6568a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Evaluation of the Product Model and the Tweedie Regressor on target PurePremium\n",
      "                                      T              \n",
      "subset                            train          test\n",
      "metric                                               \n",
      "D² explained               1.690000e-02  1.420000e-02\n",
      "mean Tweedie dev p=1.5000  7.640770e+01  7.640880e+01\n",
      "mean Tweedie dev p=1.7000  3.682880e+01  3.692270e+01\n",
      "mean Tweedie dev p=1.8000  3.037600e+01  3.045390e+01\n",
      "mean Tweedie dev p=1.9000  3.382120e+01  3.387830e+01\n",
      "mean Tweedie dev p=1.9900  2.015347e+02  2.015587e+02\n",
      "mean Tweedie dev p=1.9990  1.914538e+03  1.914387e+03\n",
      "mean Tweedie dev p=1.9999  1.904747e+04  1.904558e+04\n",
      "mean abs. error            2.739865e+02  2.731249e+02\n",
      "mean squared error         3.295505e+07  3.213056e+07\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import TweedieRegressor\n",
    "\n",
    "glm_pure_premium = TweedieRegressor(power=1.9, alpha=0.1, solver='newton-cholesky')\n",
    "glm_pure_premium.fit(\n",
    "    X_train, df_train[\"PurePremium\"], sample_weight=df_train[\"Exposure\"]\n",
    ")\n",
    "\n",
    "tweedie_powers = [1.5, 1.7, 1.8, 1.9, 1.99, 1.999, 1.9999]\n",
    "\n",
    "scores_glm_pure_premium = score_estimator(\n",
    "    glm_pure_premium,\n",
    "    X_train,\n",
    "    X_test,\n",
    "    df_train,\n",
    "    df_test,\n",
    "    target=\"PurePremium\",\n",
    "    weights=\"Exposure\",\n",
    "    tweedie_powers=tweedie_powers,\n",
    ")\n",
    "\n",
    "scores = pd.concat(\n",
    "    [scores_glm_pure_premium],\n",
    "    axis=1,\n",
    "    sort=True,\n",
    "    keys=(\"TweedieRegressor\"),\n",
    ")\n",
    "print(\"Evaluation of the Product Model and the Tweedie Regressor on target PurePremium\")\n",
    "with pd.option_context(\"display.expand_frame_repr\", False):\n",
    "    print(scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2cd54470",
   "metadata": {},
   "outputs": [],
   "source": [
    "n_iter = glm_pure_premium.n_iter_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d809add7",
   "metadata": {},
   "source": [
    "### Fit the SS GLM model (tweedie)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c0f1fe19",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zoupeicheng.zpc/miniconda3/envs/py310/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
      "  from .autonotebook import tqdm as notebook_tqdm\n",
      "2024-04-10 14:51:43,357\tINFO util.py:154 -- Missing packages: ['ipywidgets']. Run `pip install -U ipywidgets`, then restart the notebook server for rich notebook output.\n",
      "/home/zoupeicheng.zpc/miniconda3/envs/py310/lib/python3.10/subprocess.py:1796: RuntimeWarning: os.fork() was called. os.fork() is incompatible with multithreaded code, and JAX is multithreaded, so this will likely lead to a deadlock.\n",
      "  self.pid = _posixsubprocess.fork_exec(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The version of SecretFlow: 1.5.0.dev20240319\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2024-04-10 14:51:45,161\tINFO worker.py:1724 -- Started a local Ray instance.\n"
     ]
    }
   ],
   "source": [
    "import secretflow as sf\n",
    "\n",
    "# Check the version of your SecretFlow\n",
    "print('The version of SecretFlow: {}'.format(sf.__version__))\n",
    "\n",
    "# In case you have a running secretflow runtime already.\n",
    "sf.shutdown()\n",
    "\n",
    "sf.init(['alice', 'bob'], address='local')\n",
    "\n",
    "alice, bob = sf.PYU('alice'), sf.PYU('bob')\n",
    "spu = sf.SPU(\n",
    "    sf.utils.testing.cluster_def(\n",
    "        ['alice', 'bob'],\n",
    "        {\"protocol\": \"REF2K\", \"field\": \"FM128\", \"fxp_fraction_bits\": 40},\n",
    "    ),\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "dee30156",
   "metadata": {},
   "outputs": [],
   "source": [
    "from secretflow.data import FedNdarray, PartitionWay\n",
    "\n",
    "x, y = X_train, df_train[\"PurePremium\"]\n",
    "w = df_train[\"Exposure\"]\n",
    "\n",
    "\n",
    "def x_to_vdata(x):\n",
    "    x = x.todense()\n",
    "    v_data = FedNdarray(\n",
    "        partitions={\n",
    "            alice: alice(lambda: x[:, :15])(),\n",
    "            bob: bob(lambda: x[:, 15:])(),\n",
    "        },\n",
    "        partition_way=PartitionWay.VERTICAL,\n",
    "    )\n",
    "    return v_data\n",
    "\n",
    "\n",
    "v_data = x_to_vdata(x)\n",
    "\n",
    "label_data = FedNdarray(\n",
    "    partitions={alice: alice(lambda: y.values)()},\n",
    "    partition_way=PartitionWay.VERTICAL,\n",
    ")\n",
    "\n",
    "sample_weight = FedNdarray(\n",
    "    partitions={alice: alice(lambda: w.values)()},\n",
    "    partition_way=PartitionWay.VERTICAL,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "b6b341f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "from secretflow.device.driver import reveal\n",
    "from secretflow.ml.linear.ss_glm.core import get_dist\n",
    "\n",
    "dist = 'Tweedie'\n",
    "ss_glm_power = 1.9\n",
    "\n",
    "\n",
    "class DirectRevealModel:\n",
    "    def __init__(self, model) -> None:\n",
    "        self.model = model\n",
    "\n",
    "    def predict(self, X):\n",
    "        vdata = x_to_vdata(X)\n",
    "        y = self.model.predict(vdata)\n",
    "        return reveal(y).reshape((-1,))\n",
    "\n",
    "    def score(self, X, y, sample_weight=None):\n",
    "        y = y.values\n",
    "        y_pred = self.predict(X)\n",
    "\n",
    "        constant = np.mean(y)\n",
    "        if sample_weight is not None:\n",
    "            constant *= sample_weight.shape[0] / np.sum(sample_weight)\n",
    "\n",
    "        # Missing factor of 2 in deviance cancels out.\n",
    "        deviance = get_dist(dist, 1, ss_glm_power).deviance(y_pred, y, None)\n",
    "        deviance_null = get_dist(dist, 1, ss_glm_power).deviance(\n",
    "            np.average(y, weights=sample_weight) + np.zeros(y.shape), y, None\n",
    "        )\n",
    "        return 1 - (deviance + constant) / (deviance_null + constant)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "2352f9b6",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[36m(_run pid=1847901)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'cuda': \n",
      "\u001b[36m(_run pid=1847901)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n",
      "\u001b[36m(_run pid=1847901)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory\n",
      "\u001b[36m(_run pid=1847901)\u001b[0m WARNING:jax._src.xla_bridge:An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[36m(_run pid=1847901)\u001b[0m [2024-04-10 14:51:52.878] [info] [thread_pool.cc:30] Create a fixed thread pool with size 63\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:jax._src.xla_bridge:Unable to initialize backend 'cuda': \n",
      "INFO:jax._src.xla_bridge:Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n",
      "INFO:jax._src.xla_bridge:Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory\n",
      "WARNING:jax._src.xla_bridge:An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 1 train times: 10.687312841415405s\n",
      "INFO:root:epoch 1 validation time cost: 1.4902000427246094\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 2 train times: 2.2927658557891846s\n",
      "INFO:root:epoch 2 validation time cost: 0.24230360984802246\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[36m(_run pid=1847900)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'cuda': \u001b[32m [repeated 2x across cluster]\u001b[0m\n",
      "\u001b[36m(_run pid=1847900)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\u001b[32m [repeated 2x across cluster]\u001b[0m\n",
      "\u001b[36m(_run pid=1847900)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory\u001b[32m [repeated 2x across cluster]\u001b[0m\n",
      "\u001b[36m(_run pid=1847900)\u001b[0m WARNING:jax._src.xla_bridge:An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\u001b[32m [repeated 2x across cluster]\u001b[0m\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[36m(_run pid=1847900)\u001b[0m [2024-04-10 14:52:02.760] [info] [thread_pool.cc:30] Create a fixed thread pool with size 63\u001b[32m [repeated 4x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/ray-logging.html#log-deduplication for more options.)\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "from secretflow.ml.linear.ss_glm import SSGLM\n",
    "\n",
    "model = SSGLM(spu)\n",
    "\n",
    "ss_glm_power = 1.9\n",
    "start = time.time()\n",
    "model.fit_irls(\n",
    "    v_data,\n",
    "    label_data,\n",
    "    None,\n",
    "    sample_weight,\n",
    "    2,\n",
    "    'Log',\n",
    "    'Tweedie',\n",
    "    ss_glm_power,\n",
    "    l2_lambda=0.1,\n",
    "    infeed_batch_size_limit=10000000,\n",
    "    fraction_of_validation_set=0.2,\n",
    "    stopping_rounds=2,\n",
    "    stopping_metric='deviance',\n",
    "    stopping_tolerance=0.001,\n",
    ")\n",
    "\n",
    "wrapped_model = DirectRevealModel(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "18f955f5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 6.11672364e-02],\n",
       "       [-6.27847761e-02],\n",
       "       [ 5.90464830e-01],\n",
       "       [-2.83045352e-01],\n",
       "       [-2.99043152e-02],\n",
       "       [ 2.32959509e-01],\n",
       "       [-3.31744879e-01],\n",
       "       [-4.10349853e-02],\n",
       "       [-2.05912739e-01],\n",
       "       [-5.47180891e-01],\n",
       "       [ 1.80320665e-02],\n",
       "       [-8.25046301e-01],\n",
       "       [-6.76019847e-01],\n",
       "       [-2.19676018e-01],\n",
       "       [ 7.25529790e-02],\n",
       "       [-1.49030358e-01],\n",
       "       [ 2.39453673e-01],\n",
       "       [-8.90199244e-02],\n",
       "       [ 2.59962976e-01],\n",
       "       [ 5.38360476e-01],\n",
       "       [-4.86767858e-01],\n",
       "       [ 3.72849882e-01],\n",
       "       [ 1.00360489e+00],\n",
       "       [-5.93575418e-01],\n",
       "       [-6.35690615e-02],\n",
       "       [-1.54337391e-01],\n",
       "       [ 5.94256334e-02],\n",
       "       [ 3.00032616e-01],\n",
       "       [-2.28670947e-02],\n",
       "       [-2.82797873e-01],\n",
       "       [-6.76578760e-01],\n",
       "       [-8.83660316e-02],\n",
       "       [-4.11606342e-01],\n",
       "       [-8.58833492e-02],\n",
       "       [-3.20124552e-02],\n",
       "       [-6.76819921e-01],\n",
       "       [-8.11913051e-03],\n",
       "       [ 7.26208389e-01],\n",
       "       [ 1.99911878e-01],\n",
       "       [ 3.76885086e-01],\n",
       "       [ 2.87522793e-01],\n",
       "       [-2.23956928e-01],\n",
       "       [-3.90157491e-01],\n",
       "       [ 1.65949449e-01],\n",
       "       [-7.96556175e-01],\n",
       "       [-5.72459757e-01],\n",
       "       [ 4.99059868e+00],\n",
       "       [-4.00265008e-01],\n",
       "       [-4.48028564e-01],\n",
       "       [-1.15983225e-01],\n",
       "       [ 4.64645624e-01],\n",
       "       [-2.02714518e-01],\n",
       "       [-6.90334141e-01],\n",
       "       [-5.31706572e-01],\n",
       "       [-1.26760054e+00],\n",
       "       [-7.92420685e-01],\n",
       "       [-5.23323953e-01],\n",
       "       [-2.36341283e-01],\n",
       "       [-3.70131791e-01],\n",
       "       [-2.18526996e-03],\n",
       "       [-9.43786144e-01],\n",
       "       [ 1.89176261e-01],\n",
       "       [ 4.53990608e-01],\n",
       "       [-1.07097888e+00],\n",
       "       [-3.98457110e-01],\n",
       "       [ 1.83735415e-01],\n",
       "       [ 1.69883299e+00],\n",
       "       [ 8.72281611e-01],\n",
       "       [ 3.23864162e-01],\n",
       "       [-1.73008069e-01],\n",
       "       [ 1.03676505e-01],\n",
       "       [-4.01780218e-01],\n",
       "       [-1.55583763e+00],\n",
       "       [ 8.32180083e-02],\n",
       "       [ 7.42839515e-01],\n",
       "       [-1.45190573e+01]], dtype=float32)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reveal(model.spu_w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9041194f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-04-10 14:52:18.799] [info] [thread_pool.cc:30] Create a fixed thread pool with size 63\n",
      "Evaluation of the Tweedie Regressor and SS GLM on target PurePremium\n",
      "                          TweedieRegressor                    SSGLMRegressor                     \n",
      "subset                               train          test               train                 test\n",
      "metric                                                                                           \n",
      "D² explained                  1.690000e-02  1.420000e-02        -0.028425217         -0.013361573\n",
      "mean Tweedie dev p=1.5000     7.640770e+01  7.640880e+01           104.49123           107.589276\n",
      "mean Tweedie dev p=1.7000     3.682880e+01  3.692270e+01           42.709179            43.496291\n",
      "mean Tweedie dev p=1.8000     3.037600e+01  3.045390e+01           33.312476            33.760034\n",
      "mean Tweedie dev p=1.9000     3.382120e+01  3.387830e+01           35.369166            35.622196\n",
      "mean Tweedie dev p=1.9900     2.015347e+02  2.015587e+02          202.444431           202.575418\n",
      "mean Tweedie dev p=1.9990     1.914538e+03  1.914387e+03         1915.402442          1915.351636\n",
      "mean Tweedie dev p=1.9999     1.904747e+04  1.904558e+04        19048.331019         19046.541218\n",
      "mean abs. error               2.739865e+02  2.731249e+02         3247.234213         10171.117452\n",
      "mean squared error            3.295505e+07  3.213056e+07  54482957225.729271  14531194355862.4375\n"
     ]
    }
   ],
   "source": [
    "tweedie_powers = [1.5, 1.7, 1.8, 1.9, 1.99, 1.999, 1.9999]\n",
    "\n",
    "scores_ss_glm_pure_premium = score_estimator(\n",
    "    wrapped_model,\n",
    "    X_train,\n",
    "    X_test,\n",
    "    df_train,\n",
    "    df_test,\n",
    "    target=\"PurePremium\",\n",
    "    weights=\"Exposure\",\n",
    "    tweedie_powers=tweedie_powers,\n",
    ")\n",
    "\n",
    "scores = pd.concat(\n",
    "    [scores_glm_pure_premium, scores_ss_glm_pure_premium],\n",
    "    axis=1,\n",
    "    sort=True,\n",
    "    keys=(\"TweedieRegressor\", \"SSGLMRegressor\"),\n",
    ")\n",
    "print(\"Evaluation of the Tweedie Regressor and SS GLM on target PurePremium\")\n",
    "with pd.option_context(\"display.expand_frame_repr\", False):\n",
    "    print(scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "75a5c31d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "subset                                 train          test\n",
      "observed                        3.917618e+07  1.299546e+07\n",
      "predicted, tweedie, power=1.90  3.951751e+07  1.325198e+07\n",
      "predicted, ss glm, power=1.90   8.485921e+08  9.056170e+08\n"
     ]
    }
   ],
   "source": [
    "res = []\n",
    "for subset_label, x, df in [\n",
    "    (\"train\", X_train, df_train),\n",
    "    (\"test\", X_test, df_test),\n",
    "]:\n",
    "    exposure = df[\"Exposure\"].values\n",
    "    res.append(\n",
    "        {\n",
    "            \"subset\": subset_label,\n",
    "            \"observed\": df[\"ClaimAmount\"].values.sum(),\n",
    "            \"predicted, tweedie, power=%.2f\"\n",
    "            % glm_pure_premium.power: np.sum(exposure * glm_pure_premium.predict(x)),\n",
    "            \"predicted, ss glm, power=%.2f\"\n",
    "            % ss_glm_power: np.sum(exposure * wrapped_model.predict(x)),\n",
    "        }\n",
    "    )\n",
    "\n",
    "print(pd.DataFrame(res).set_index(\"subset\").T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3b459553",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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/Uvs3AULFlRt2rRJ1X2Lt2fPHlW+fHlla2urnJycVOXKldX169eVUkoFBgYqHx8fZW9vrxwcHFSZMmXUsWPHDPuuW7dOFSlSRFlaWqo8efKoSZMmGcWVknvwMl9fX5UrV65EPx9KKaV/4bM2efJkVaxYMWVra6ty5cqlevXqZfR1WrRokXJyclJ//PGH8vLyUjY2Nqp58+YqPDxcLV68WOXJk0dlyZJFff755yo2NtYo7rFjx6r27dsrOzs7lTt3brVx40Z19+5dw70tXry40b24f/++atOmjfrggw+UjY2NKlasmFqxYkWy19qkSRPVsWPHZOs4OTmpxYsXJ1vnZePHj1darVadOHEi0e0v3kM/Pz/VpEmTJI+VJ08e9fXXXysrKyt18+ZNQ3m3bt3U559/rpycnNSiRYuS3P/YsWNKq9WqJ0+eGMpu3LihLCwsVP/+/V8ZX/zXMF785/eXX35RefLkUY6Ojqp169ZGx0/se+RFL38PxN+DiRMnKjc3N5UtWzbVu3dvFR0dbajzzz//qEaNGilra2uVN29etWzZMpUnTx41depUQ51Hjx6pLl26qOzZsysHBwdVo0YNFRgYqJRS6u7du8rV1VV99913hvoHDhxQFhYWateuXUnG+rLBgwerokWLGpW1bt1a+fr6pvgYSinVoEED1alTp0S3vXxd8YYMGaKqVq36ymN36tRJtWvXLtFtif7uEiIFpk6dqgA1d+7cZOtdG1defTdymBo1apR6+PDhO4ktuXztZdIy+yoxETDuA9O8YlL26Pfhw4ds27aNPn36JNqiE983Tq/X06RJEx4+fMjevXvZuXMnV69epXXr1kb1r1y5wtatW9m2bRsrV67k559/pmHDhvz999/s3buXCRMmMHz4cI4cOWK034gRI2jevDmnTp2ibdu2tGnThqCgIADCw8Px9fUla9asHDt2jLVr17Jr1y769u2b6i/J5MmTKVeuHCdPnqR379706tWL4OBgIG6GjEaNGlGkSBECAgIYNWoUgwYNSvU5IK71Kjo6OsX3LV5sbCxNmzalevXqnD59mkOHDtG9e3fDX7pt27YlV65cHDt2jICAAL7++mssLCwACAgIoFWrVrRp04YzZ84watQoRowYkeCRZ3L34GUPHjxgx44dSX4+AKO/wrVaLTNmzODcuXMsWbKEP//8k8GDBxvVj4iI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",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import auc\n",
    "\n",
    "\n",
    "def lorenz_curve(y_true, y_pred, exposure):\n",
    "    y_true, y_pred = np.asarray(y_true), np.asarray(y_pred)\n",
    "    exposure = np.asarray(exposure)\n",
    "\n",
    "    # order samples by increasing predicted risk:\n",
    "    ranking = np.argsort(y_pred)\n",
    "    ranked_exposure = exposure[ranking]\n",
    "    ranked_pure_premium = y_true[ranking]\n",
    "    cumulated_claim_amount = np.cumsum(ranked_pure_premium * ranked_exposure)\n",
    "    cumulated_claim_amount /= cumulated_claim_amount[-1]\n",
    "    cumulated_samples = np.linspace(0, 1, len(cumulated_claim_amount))\n",
    "    return cumulated_samples, cumulated_claim_amount\n",
    "\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 8))\n",
    "\n",
    "y_pred_total_ss_glm = wrapped_model.predict(X_test).reshape((-1,))\n",
    "y_pred_total = glm_pure_premium.predict(X_test)\n",
    "\n",
    "for label, y_pred in [\n",
    "    (\"Compound Poisson Gamma\", y_pred_total),\n",
    "    (\"Compound Poisson Gamma SS GLM\", y_pred_total_ss_glm),\n",
    "]:\n",
    "    ordered_samples, cum_claims = lorenz_curve(\n",
    "        df_test[\"PurePremium\"], y_pred, df_test[\"Exposure\"]\n",
    "    )\n",
    "    gini = 1 - 2 * auc(ordered_samples, cum_claims)\n",
    "    label += \" (Gini index: {:.3f})\".format(gini)\n",
    "    ax.plot(ordered_samples, cum_claims, linestyle=\"-\", label=label)\n",
    "\n",
    "# Oracle model: y_pred == y_test\n",
    "ordered_samples, cum_claims = lorenz_curve(\n",
    "    df_test[\"PurePremium\"], df_test[\"PurePremium\"], df_test[\"Exposure\"]\n",
    ")\n",
    "gini = 1 - 2 * auc(ordered_samples, cum_claims)\n",
    "label = \"Oracle (Gini index: {:.3f})\".format(gini)\n",
    "ax.plot(ordered_samples, cum_claims, linestyle=\"-.\", color=\"gray\", label=label)\n",
    "\n",
    "# Random baseline\n",
    "ax.plot([0, 1], [0, 1], linestyle=\"--\", color=\"black\", label=\"Random baseline\")\n",
    "ax.set(\n",
    "    title=\"Lorenz Curves\",\n",
    "    xlabel=\"Fraction of policyholders\\n(ordered by model from safest to riskiest)\",\n",
    "    ylabel=\"Fraction of total claim amount\",\n",
    ")\n",
    "ax.legend(loc=\"upper left\")\n",
    "plt.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c689845c",
   "metadata": {},
   "source": [
    "# SS GLM vs stats model package (offset)\n",
    "\n",
    "Statsmodel is another cleartext package with glm functionality.\n",
    "\n",
    "Next we compare ss glm with stats model when using the offset option. The overall steps are very similar, but there is a slight difference in how the offset is handled."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "aac06291",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "from functools import partial\n",
    "from sklearn.metrics import (\n",
    "    mean_absolute_error,\n",
    "    mean_squared_error,\n",
    "    mean_tweedie_deviance,\n",
    ")\n",
    "\n",
    "\n",
    "def score_estimator(\n",
    "    estimator,\n",
    "    X_train,\n",
    "    X_test,\n",
    "    df_train,\n",
    "    df_test,\n",
    "    target,\n",
    "    weights=None,\n",
    "    tweedie_powers=None,\n",
    "):\n",
    "    \"\"\"Evaluate an estimator on train and test sets with different metrics\"\"\"\n",
    "\n",
    "    metrics = [\n",
    "        (\"D² explained\", None),  # Use default scorer if it exists\n",
    "        (\"mean abs. error\", mean_absolute_error),\n",
    "        (\"mean squared error\", mean_squared_error),\n",
    "    ]\n",
    "    if tweedie_powers:\n",
    "        metrics += [\n",
    "            (\n",
    "                \"mean Tweedie dev p={:.4f}\".format(power),\n",
    "                partial(mean_tweedie_deviance, power=power),\n",
    "            )\n",
    "            for power in tweedie_powers\n",
    "        ]\n",
    "\n",
    "    res = []\n",
    "    for subset_label, X, df in [\n",
    "        (\"train\", X_train, df_train),\n",
    "        (\"test\", X_test, df_test),\n",
    "    ]:\n",
    "        y = df[target]\n",
    "        if weights is not None:\n",
    "            _weights = df[weights]\n",
    "        else:\n",
    "            _weights = None\n",
    "        for score_label, metric in metrics:\n",
    "            if isinstance(estimator, tuple) and len(estimator) == 2:\n",
    "                # Score the model consisting of the product of frequency and\n",
    "                # severity models.\n",
    "                est_freq, est_sev = estimator\n",
    "                y_pred = est_freq.predict(X) * est_sev.predict(X)\n",
    "            else:\n",
    "                y_pred = estimator.predict(X)\n",
    "\n",
    "            if metric is None:\n",
    "                if not hasattr(estimator, \"score\"):\n",
    "                    continue\n",
    "                score = estimator.score(X, y, sample_weight=_weights)\n",
    "            else:\n",
    "                score = metric(y, y_pred, sample_weight=_weights)\n",
    "\n",
    "            res.append({\"subset\": subset_label, \"metric\": score_label, \"score\": score})\n",
    "\n",
    "    res = (\n",
    "        pd.DataFrame(res)\n",
    "        .set_index([\"metric\", \"subset\"])\n",
    "        .score.unstack(-1)\n",
    "        .round(4)\n",
    "        .loc[:, [\"train\", \"test\"]]\n",
    "    )\n",
    "    return res"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3395ae44",
   "metadata": {},
   "source": [
    "## Using the statsmodels package"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "4d22ca5d",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zoupeicheng.zpc/miniconda3/envs/py310/lib/python3.10/site-packages/statsmodels/base/model.py:127: ValueWarning: unknown kwargs ['var_power']\n",
      "  warnings.warn(msg, ValueWarning)\n",
      "/home/zoupeicheng.zpc/miniconda3/envs/py310/lib/python3.10/site-packages/statsmodels/genmod/families/family.py:1582: RuntimeWarning: divide by zero encountered in log\n",
      "  endog * np.log(endog / mu) + (mu - endog))\n",
      "/home/zoupeicheng.zpc/miniconda3/envs/py310/lib/python3.10/site-packages/statsmodels/genmod/families/family.py:1582: RuntimeWarning: invalid value encountered in multiply\n",
      "  endog * np.log(endog / mu) + (mu - endog))\n"
     ]
    }
   ],
   "source": [
    "from statsmodels.genmod.generalized_linear_model import GLM\n",
    "import statsmodels.api as sm\n",
    "\n",
    "sm_glm = GLM(\n",
    "    endog=df_train[\"ClaimAmount\"].values,\n",
    "    exog=sm.add_constant(X_train.todense()),\n",
    "    offset=df_train[\"Exposure\"].values,\n",
    "    family=sm.families.Tweedie(),\n",
    "    var_power=1.9,\n",
    ")\n",
    "results = sm_glm.fit(method='IRLS')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "33f277c3",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zoupeicheng.zpc/miniconda3/envs/py310/lib/python3.10/site-packages/statsmodels/base/model.py:127: ValueWarning: unknown kwargs ['var_power']\n",
      "  warnings.warn(msg, ValueWarning)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>Generalized Linear Model Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>           <td>y</td>        <th>  No. Observations:  </th>   <td>508509</td>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                  <td>GLM</td>       <th>  Df Residuals:      </th>   <td>508440</td>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model Family:</th>         <td>Tweedie</td>     <th>  Df Model:          </th>   <td>    68</td>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Link Function:</th>          <td>Log</td>       <th>  Scale:             </th>  <td>  31356.</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>                <td>IRLS</td>       <th>  Log-Likelihood:    </th>  <td>     nan</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>            <td>Wed, 10 Apr 2024</td> <th>  Deviance:          </th> <td>3.3200e+08</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                <td>14:55:31</td>     <th>  Pearson chi2:      </th>  <td>1.59e+10</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Iterations:</th>         <td>11</td>        <th>  Pseudo R-squ. (CS):</th>   <td>   nan</td>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>     <td>nonrobust</td>    <th>                     </th>      <td> </td>    \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "    <td></td>       <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>const</th> <td>    0.9706</td> <td>    0.074</td> <td>   13.120</td> <td> 0.000</td> <td>    0.826</td> <td>    1.116</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x1</th>    <td>   -0.1729</td> <td>    0.130</td> <td>   -1.326</td> <td> 0.185</td> <td>   -0.429</td> <td>    0.083</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x2</th>    <td>    0.2374</td> <td>    0.091</td> <td>    2.616</td> <td> 0.009</td> <td>    0.060</td> <td>    0.415</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x3</th>    <td>    0.3050</td> <td>    0.091</td> <td>    3.367</td> <td> 0.001</td> <td>    0.127</td> <td>    0.483</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x4</th>    <td>    0.1390</td> <td>    0.102</td> <td>    1.366</td> <td> 0.172</td> <td>   -0.060</td> <td>    0.338</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x5</th>    <td>    0.1656</td> <td>    0.077</td> <td>    2.145</td> <td> 0.032</td> <td>    0.014</td> <td>    0.317</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x6</th>    <td>    0.2642</td> <td>    0.078</td> <td>    3.395</td> <td> 0.001</td> <td>    0.112</td> <td>    0.417</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x7</th>    <td>    0.0887</td> <td>    0.085</td> <td>    1.042</td> <td> 0.297</td> <td>   -0.078</td> <td>    0.256</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x8</th>    <td>    0.0240</td> <td>    0.085</td> <td>    0.282</td> <td> 0.778</td> <td>   -0.143</td> <td>    0.191</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x9</th>    <td>    0.0872</td> <td>    0.078</td> <td>    1.117</td> <td> 0.264</td> <td>   -0.066</td> <td>    0.240</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x10</th>   <td>   -0.1676</td> <td>    0.091</td> <td>   -1.845</td> <td> 0.065</td> <td>   -0.346</td> <td>    0.010</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x11</th>   <td>    0.1393</td> <td>    0.085</td> <td>    1.644</td> <td> 0.100</td> <td>   -0.027</td> <td>    0.305</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x12</th>   <td>   -0.2945</td> <td>    0.102</td> <td>   -2.900</td> <td> 0.004</td> <td>   -0.494</td> <td>   -0.095</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x13</th>   <td>   -0.1101</td> <td>    0.093</td> <td>   -1.185</td> <td> 0.236</td> <td>   -0.292</td> <td>    0.072</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x14</th>   <td>    0.0254</td> <td>    0.089</td> <td>    0.284</td> <td> 0.777</td> <td>   -0.150</td> <td>    0.201</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x15</th>   <td>    0.0878</td> <td>    0.091</td> <td>    0.966</td> <td> 0.334</td> <td>   -0.090</td> <td>    0.266</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x16</th>   <td>    0.1123</td> <td>    0.084</td> <td>    1.337</td> <td> 0.181</td> <td>   -0.052</td> <td>    0.277</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x17</th>   <td>    0.2764</td> <td>    0.086</td> <td>    3.231</td> <td> 0.001</td> <td>    0.109</td> <td>    0.444</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x18</th>   <td>    0.1865</td> <td>    0.094</td> <td>    1.981</td> <td> 0.048</td> <td>    0.002</td> <td>    0.371</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x19</th>   <td>    0.1555</td> <td>    0.088</td> <td>    1.763</td> <td> 0.078</td> <td>   -0.017</td> <td>    0.329</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x20</th>   <td>    0.3920</td> <td>    0.080</td> <td>    4.924</td> <td> 0.000</td> <td>    0.236</td> <td>    0.548</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x21</th>   <td>    0.0367</td> <td>    0.076</td> <td>    0.481</td> <td> 0.631</td> <td>   -0.113</td> <td>    0.186</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x22</th>   <td>    0.2159</td> <td>    0.157</td> <td>    1.374</td> <td> 0.169</td> <td>   -0.092</td> <td>    0.524</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x23</th>   <td>    0.3589</td> <td>    0.166</td> <td>    2.165</td> <td> 0.030</td> <td>    0.034</td> <td>    0.684</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x24</th>   <td>   -0.1970</td> <td>    0.092</td> <td>   -2.137</td> <td> 0.033</td> <td>   -0.378</td> <td>   -0.016</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x25</th>   <td>    0.1552</td> <td>    0.187</td> <td>    0.832</td> <td> 0.405</td> <td>   -0.210</td> <td>    0.521</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x26</th>   <td>   -0.1316</td> <td>    0.388</td> <td>   -0.340</td> <td> 0.734</td> <td>   -0.891</td> <td>    0.628</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x27</th>   <td>    0.1657</td> <td>    0.074</td> <td>    2.236</td> <td> 0.025</td> <td>    0.020</td> <td>    0.311</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x28</th>   <td>    0.2124</td> <td>    0.099</td> <td>    2.148</td> <td> 0.032</td> <td>    0.019</td> <td>    0.406</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x29</th>   <td>    0.1688</td> <td>    0.136</td> <td>    1.242</td> <td> 0.214</td> <td>   -0.097</td> <td>    0.435</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x30</th>   <td>    0.1022</td> <td>    0.123</td> <td>    0.833</td> <td> 0.405</td> <td>   -0.138</td> <td>    0.343</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x31</th>   <td>   -0.1167</td> <td>    0.145</td> <td>   -0.807</td> <td> 0.420</td> <td>   -0.400</td> <td>    0.167</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x32</th>   <td>   -0.0405</td> <td>    0.104</td> <td>   -0.391</td> <td> 0.696</td> <td>   -0.244</td> <td>    0.163</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x33</th>   <td>   -0.1595</td> <td>    0.103</td> <td>   -1.544</td> <td> 0.123</td> <td>   -0.362</td> <td>    0.043</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x34</th>   <td>    0.0708</td> <td>    0.098</td> <td>    0.724</td> <td> 0.469</td> <td>   -0.121</td> <td>    0.262</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x35</th>   <td>    0.0521</td> <td>    0.095</td> <td>    0.550</td> <td> 0.583</td> <td>   -0.134</td> <td>    0.238</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x36</th>   <td>   -0.0622</td> <td>    0.134</td> <td>   -0.464</td> <td> 0.642</td> <td>   -0.325</td> <td>    0.200</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x37</th>   <td>    0.1877</td> <td>    0.140</td> <td>    1.340</td> <td> 0.180</td> <td>   -0.087</td> <td>    0.462</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x38</th>   <td>    0.3044</td> <td>    0.136</td> <td>    2.233</td> <td> 0.026</td> <td>    0.037</td> <td>    0.572</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x39</th>   <td>    0.2389</td> <td>    0.175</td> <td>    1.367</td> <td> 0.172</td> <td>   -0.104</td> <td>    0.581</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x40</th>   <td>    0.2969</td> <td>    0.243</td> <td>    1.221</td> <td> 0.222</td> <td>   -0.180</td> <td>    0.774</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x41</th>   <td>    0.3781</td> <td>    0.332</td> <td>    1.141</td> <td> 0.254</td> <td>   -0.272</td> <td>    1.028</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x42</th>   <td>   -0.0522</td> <td>    0.472</td> <td>   -0.111</td> <td> 0.912</td> <td>   -0.977</td> <td>    0.872</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x43</th>   <td>   -0.2439</td> <td>    0.528</td> <td>   -0.462</td> <td> 0.644</td> <td>   -1.278</td> <td>    0.791</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x44</th>   <td>    0.5507</td> <td>    0.049</td> <td>   11.306</td> <td> 0.000</td> <td>    0.455</td> <td>    0.646</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x45</th>   <td>    0.4199</td> <td>    0.048</td> <td>    8.797</td> <td> 0.000</td> <td>    0.326</td> <td>    0.513</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x46</th>   <td>   -0.0571</td> <td>    0.129</td> <td>   -0.441</td> <td> 0.659</td> <td>   -0.311</td> <td>    0.196</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x47</th>   <td>    0.8552</td> <td>    0.329</td> <td>    2.601</td> <td> 0.009</td> <td>    0.211</td> <td>    1.500</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x48</th>   <td>    0.3601</td> <td>    0.232</td> <td>    1.553</td> <td> 0.121</td> <td>   -0.094</td> <td>    0.815</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x49</th>   <td>   -0.4291</td> <td>    0.342</td> <td>   -1.253</td> <td> 0.210</td> <td>   -1.100</td> <td>    0.242</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x50</th>   <td>    0.1277</td> <td>    0.089</td> <td>    1.436</td> <td> 0.151</td> <td>   -0.047</td> <td>    0.302</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x51</th>   <td>    0.2621</td> <td>    0.202</td> <td>    1.299</td> <td> 0.194</td> <td>   -0.133</td> <td>    0.658</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x52</th>   <td>    0.0510</td> <td>    0.242</td> <td>    0.210</td> <td> 0.834</td> <td>   -0.424</td> <td>    0.526</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x53</th>   <td>   -0.1544</td> <td>    0.167</td> <td>   -0.925</td> <td> 0.355</td> <td>   -0.482</td> <td>    0.173</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x54</th>   <td>    0.1486</td> <td>    0.199</td> <td>    0.747</td> <td> 0.455</td> <td>   -0.242</td> <td>    0.539</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x55</th>   <td>   -0.3591</td> <td>    0.576</td> <td>   -0.623</td> <td> 0.533</td> <td>   -1.488</td> <td>    0.770</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x56</th>   <td>   -0.3016</td> <td>    0.800</td> <td>   -0.377</td> <td> 0.706</td> <td>   -1.870</td> <td>    1.267</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x57</th>   <td>   -0.0952</td> <td>    0.139</td> <td>   -0.683</td> <td> 0.495</td> <td>   -0.369</td> <td>    0.178</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x58</th>   <td>    0.2065</td> <td>    0.121</td> <td>    1.706</td> <td> 0.088</td> <td>   -0.031</td> <td>    0.444</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x59</th>   <td>    0.0534</td> <td>    0.175</td> <td>    0.304</td> <td> 0.761</td> <td>   -0.291</td> <td>    0.397</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x60</th>   <td>    0.0389</td> <td>    0.152</td> <td>    0.256</td> <td> 0.798</td> <td>   -0.258</td> <td>    0.336</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x61</th>   <td>   -0.5249</td> <td>    0.269</td> <td>   -1.948</td> <td> 0.051</td> <td>   -1.053</td> <td>    0.003</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x62</th>   <td>    0.1645</td> <td>    0.362</td> <td>    0.454</td> <td> 0.650</td> <td>   -0.546</td> <td>    0.875</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x63</th>   <td>    0.2632</td> <td>    0.096</td> <td>    2.738</td> <td> 0.006</td> <td>    0.075</td> <td>    0.452</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x64</th>   <td>   -0.4992</td> <td>    0.468</td> <td>   -1.067</td> <td> 0.286</td> <td>   -1.416</td> <td>    0.418</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x65</th>   <td>   -0.0553</td> <td>    0.154</td> <td>   -0.360</td> <td> 0.719</td> <td>   -0.356</td> <td>    0.246</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x66</th>   <td>    0.2098</td> <td>    0.103</td> <td>    2.035</td> <td> 0.042</td> <td>    0.008</td> <td>    0.412</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x67</th>   <td>    0.7054</td> <td>    0.285</td> <td>    2.472</td> <td> 0.013</td> <td>    0.146</td> <td>    1.265</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x68</th>   <td>    0.4323</td> <td>    0.224</td> <td>    1.930</td> <td> 0.054</td> <td>   -0.007</td> <td>    0.871</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x69</th>   <td>    0.2958</td> <td>    0.164</td> <td>    1.802</td> <td> 0.071</td> <td>   -0.026</td> <td>    0.618</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x70</th>   <td>    0.1881</td> <td>    0.088</td> <td>    2.134</td> <td> 0.033</td> <td>    0.015</td> <td>    0.361</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x71</th>   <td>    0.2522</td> <td>    0.077</td> <td>    3.270</td> <td> 0.001</td> <td>    0.101</td> <td>    0.403</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x72</th>   <td>    0.1221</td> <td>    0.150</td> <td>    0.813</td> <td> 0.416</td> <td>   -0.172</td> <td>    0.416</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x73</th>   <td>   -0.3199</td> <td>    0.309</td> <td>   -1.037</td> <td> 0.300</td> <td>   -0.925</td> <td>    0.285</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x74</th>   <td>    0.0266</td> <td>    0.002</td> <td>   16.350</td> <td> 0.000</td> <td>    0.023</td> <td>    0.030</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x75</th>   <td>    0.2218</td> <td>    0.127</td> <td>    1.740</td> <td> 0.082</td> <td>   -0.028</td> <td>    0.472</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                 Generalized Linear Model Regression Results                  \n",
       "==============================================================================\n",
       "Dep. Variable:                      y   No. Observations:               508509\n",
       "Model:                            GLM   Df Residuals:                   508440\n",
       "Model Family:                 Tweedie   Df Model:                           68\n",
       "Link Function:                    Log   Scale:                          31356.\n",
       "Method:                          IRLS   Log-Likelihood:                    nan\n",
       "Date:                Wed, 10 Apr 2024   Deviance:                   3.3200e+08\n",
       "Time:                        14:55:31   Pearson chi2:                 1.59e+10\n",
       "No. Iterations:                    11   Pseudo R-squ. (CS):                nan\n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          z      P>|z|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "const          0.9706      0.074     13.120      0.000       0.826       1.116\n",
       "x1            -0.1729      0.130     -1.326      0.185      -0.429       0.083\n",
       "x2             0.2374      0.091      2.616      0.009       0.060       0.415\n",
       "x3             0.3050      0.091      3.367      0.001       0.127       0.483\n",
       "x4             0.1390      0.102      1.366      0.172      -0.060       0.338\n",
       "x5             0.1656      0.077      2.145      0.032       0.014       0.317\n",
       "x6             0.2642      0.078      3.395      0.001       0.112       0.417\n",
       "x7             0.0887      0.085      1.042      0.297      -0.078       0.256\n",
       "x8             0.0240      0.085      0.282      0.778      -0.143       0.191\n",
       "x9             0.0872      0.078      1.117      0.264      -0.066       0.240\n",
       "x10           -0.1676      0.091     -1.845      0.065      -0.346       0.010\n",
       "x11            0.1393      0.085      1.644      0.100      -0.027       0.305\n",
       "x12           -0.2945      0.102     -2.900      0.004      -0.494      -0.095\n",
       "x13           -0.1101      0.093     -1.185      0.236      -0.292       0.072\n",
       "x14            0.0254      0.089      0.284      0.777      -0.150       0.201\n",
       "x15            0.0878      0.091      0.966      0.334      -0.090       0.266\n",
       "x16            0.1123      0.084      1.337      0.181      -0.052       0.277\n",
       "x17            0.2764      0.086      3.231      0.001       0.109       0.444\n",
       "x18            0.1865      0.094      1.981      0.048       0.002       0.371\n",
       "x19            0.1555      0.088      1.763      0.078      -0.017       0.329\n",
       "x20            0.3920      0.080      4.924      0.000       0.236       0.548\n",
       "x21            0.0367      0.076      0.481      0.631      -0.113       0.186\n",
       "x22            0.2159      0.157      1.374      0.169      -0.092       0.524\n",
       "x23            0.3589      0.166      2.165      0.030       0.034       0.684\n",
       "x24           -0.1970      0.092     -2.137      0.033      -0.378      -0.016\n",
       "x25            0.1552      0.187      0.832      0.405      -0.210       0.521\n",
       "x26           -0.1316      0.388     -0.340      0.734      -0.891       0.628\n",
       "x27            0.1657      0.074      2.236      0.025       0.020       0.311\n",
       "x28            0.2124      0.099      2.148      0.032       0.019       0.406\n",
       "x29            0.1688      0.136      1.242      0.214      -0.097       0.435\n",
       "x30            0.1022      0.123      0.833      0.405      -0.138       0.343\n",
       "x31           -0.1167      0.145     -0.807      0.420      -0.400       0.167\n",
       "x32           -0.0405      0.104     -0.391      0.696      -0.244       0.163\n",
       "x33           -0.1595      0.103     -1.544      0.123      -0.362       0.043\n",
       "x34            0.0708      0.098      0.724      0.469      -0.121       0.262\n",
       "x35            0.0521      0.095      0.550      0.583      -0.134       0.238\n",
       "x36           -0.0622      0.134     -0.464      0.642      -0.325       0.200\n",
       "x37            0.1877      0.140      1.340      0.180      -0.087       0.462\n",
       "x38            0.3044      0.136      2.233      0.026       0.037       0.572\n",
       "x39            0.2389      0.175      1.367      0.172      -0.104       0.581\n",
       "x40            0.2969      0.243      1.221      0.222      -0.180       0.774\n",
       "x41            0.3781      0.332      1.141      0.254      -0.272       1.028\n",
       "x42           -0.0522      0.472     -0.111      0.912      -0.977       0.872\n",
       "x43           -0.2439      0.528     -0.462      0.644      -1.278       0.791\n",
       "x44            0.5507      0.049     11.306      0.000       0.455       0.646\n",
       "x45            0.4199      0.048      8.797      0.000       0.326       0.513\n",
       "x46           -0.0571      0.129     -0.441      0.659      -0.311       0.196\n",
       "x47            0.8552      0.329      2.601      0.009       0.211       1.500\n",
       "x48            0.3601      0.232      1.553      0.121      -0.094       0.815\n",
       "x49           -0.4291      0.342     -1.253      0.210      -1.100       0.242\n",
       "x50            0.1277      0.089      1.436      0.151      -0.047       0.302\n",
       "x51            0.2621      0.202      1.299      0.194      -0.133       0.658\n",
       "x52            0.0510      0.242      0.210      0.834      -0.424       0.526\n",
       "x53           -0.1544      0.167     -0.925      0.355      -0.482       0.173\n",
       "x54            0.1486      0.199      0.747      0.455      -0.242       0.539\n",
       "x55           -0.3591      0.576     -0.623      0.533      -1.488       0.770\n",
       "x56           -0.3016      0.800     -0.377      0.706      -1.870       1.267\n",
       "x57           -0.0952      0.139     -0.683      0.495      -0.369       0.178\n",
       "x58            0.2065      0.121      1.706      0.088      -0.031       0.444\n",
       "x59            0.0534      0.175      0.304      0.761      -0.291       0.397\n",
       "x60            0.0389      0.152      0.256      0.798      -0.258       0.336\n",
       "x61           -0.5249      0.269     -1.948      0.051      -1.053       0.003\n",
       "x62            0.1645      0.362      0.454      0.650      -0.546       0.875\n",
       "x63            0.2632      0.096      2.738      0.006       0.075       0.452\n",
       "x64           -0.4992      0.468     -1.067      0.286      -1.416       0.418\n",
       "x65           -0.0553      0.154     -0.360      0.719      -0.356       0.246\n",
       "x66            0.2098      0.103      2.035      0.042       0.008       0.412\n",
       "x67            0.7054      0.285      2.472      0.013       0.146       1.265\n",
       "x68            0.4323      0.224      1.930      0.054      -0.007       0.871\n",
       "x69            0.2958      0.164      1.802      0.071      -0.026       0.618\n",
       "x70            0.1881      0.088      2.134      0.033       0.015       0.361\n",
       "x71            0.2522      0.077      3.270      0.001       0.101       0.403\n",
       "x72            0.1221      0.150      0.813      0.416      -0.172       0.416\n",
       "x73           -0.3199      0.309     -1.037      0.300      -0.925       0.285\n",
       "x74            0.0266      0.002     16.350      0.000       0.023       0.030\n",
       "x75            0.2218      0.127      1.740      0.082      -0.028       0.472\n",
       "==============================================================================\n",
       "\"\"\""
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "414bd9e6",
   "metadata": {},
   "outputs": [],
   "source": [
    "from secretflow.device.driver import reveal\n",
    "from secretflow.ml.linear.ss_glm.core import get_dist\n",
    "from secretflow.data import FedNdarray, PartitionWay\n",
    "\n",
    "dist = 'Tweedie'\n",
    "ss_glm_power = 1.9\n",
    "\n",
    "\n",
    "def x_to_vdata(x):\n",
    "    x = x.todense()\n",
    "    v_data = FedNdarray(\n",
    "        partitions={\n",
    "            alice: alice(lambda: x[:, :15])(),\n",
    "            bob: bob(lambda: x[:, 15:])(),\n",
    "        },\n",
    "        partition_way=PartitionWay.VERTICAL,\n",
    "    )\n",
    "    return v_data\n",
    "\n",
    "\n",
    "class WrapModel:\n",
    "    def __init__(self, model, fed=True) -> None:\n",
    "        self.model = model\n",
    "        self.fed = fed\n",
    "\n",
    "    def predict(self, X):\n",
    "        if self.fed:\n",
    "            vdata = x_to_vdata(X)\n",
    "            y = self.model.predict(vdata)\n",
    "            return reveal(y).reshape((-1,))\n",
    "        else:\n",
    "            y = self.model.predict(sm.add_constant(X.todense()))\n",
    "            return y.reshape((-1,))\n",
    "\n",
    "    def score(self, X, y, sample_weight=None):\n",
    "        y = y.values\n",
    "        y_pred = self.predict(X)\n",
    "\n",
    "        constant = np.mean(y)\n",
    "        if sample_weight is not None:\n",
    "            constant *= sample_weight.shape[0] / np.sum(sample_weight)\n",
    "\n",
    "        # Missing factor of 2 in deviance cancels out.\n",
    "        deviance = get_dist(dist, 1, ss_glm_power).deviance(y_pred, y, None)\n",
    "        deviance_null = get_dist(dist, 1, ss_glm_power).deviance(\n",
    "            np.average(y, weights=sample_weight) + np.zeros(y.shape), y, None\n",
    "        )\n",
    "        return 1 - (deviance + constant) / (deviance_null + constant)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "74d39cd6",
   "metadata": {},
   "outputs": [],
   "source": [
    "wrapped_sm_model = WrapModel(results, False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "bc47b58a",
   "metadata": {},
   "outputs": [],
   "source": [
    "x, y = X_train, df_train[\"ClaimAmount\"]\n",
    "o = df_train[\"Exposure\"]\n",
    "\n",
    "v_data = x_to_vdata(x)\n",
    "\n",
    "label_data = FedNdarray(\n",
    "    partitions={alice: alice(lambda: y.values)()},\n",
    "    partition_way=PartitionWay.VERTICAL,\n",
    ")\n",
    "\n",
    "offset = FedNdarray(\n",
    "    partitions={alice: alice(lambda: o.values)()},\n",
    "    partition_way=PartitionWay.VERTICAL,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "c0a6cc08",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[36m(_run pid=1847893)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'cuda': \n",
      "\u001b[36m(_run pid=1847893)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n",
      "\u001b[36m(_run pid=1847893)\u001b[0m INFO:jax._src.xla_bridge:Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory\n",
      "\u001b[36m(_run pid=1847893)\u001b[0m WARNING:jax._src.xla_bridge:An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[36m(_run pid=1847893)\u001b[0m [2024-04-10 14:55:36.711] [info] [thread_pool.cc:30] Create a fixed thread pool with size 63\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 1 train times: 10.074244260787964s\n",
      "INFO:root:epoch 1 validation time cost: 1.188157081604004\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 2 train times: 2.5917844772338867s\n",
      "INFO:root:epoch 2 validation time cost: 0.0677945613861084\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 3 train times: 2.4628679752349854s\n",
      "INFO:root:epoch 3 validation time cost: 0.0730447769165039\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 4 train times: 2.3934051990509033s\n",
      "INFO:root:epoch 4 validation time cost: 0.06900691986083984\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 5 train times: 2.400435209274292s\n",
      "INFO:root:epoch 5 validation time cost: 0.06916284561157227\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 6 train times: 2.342944622039795s\n",
      "INFO:root:epoch 6 validation time cost: 0.06879138946533203\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 7 train times: 2.349984645843506s\n",
      "INFO:root:epoch 7 validation time cost: 0.0748908519744873\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 8 train times: 2.439706563949585s\n",
      "INFO:root:epoch 8 validation time cost: 0.0705575942993164\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls calculating partials...\n",
      "INFO:root:irls updating weights...\n",
      "INFO:root:epoch 9 train times: 2.4417901039123535s\n",
      "INFO:root:epoch 9 validation time cost: 0.07078433036804199\n",
      "INFO:root:early stop triggered\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "from secretflow.ml.linear.ss_glm import SSGLM\n",
    "\n",
    "model = SSGLM(spu)\n",
    "\n",
    "ss_glm_power = 1.9\n",
    "start = time.time()\n",
    "model.fit_irls(\n",
    "    v_data,\n",
    "    label_data,\n",
    "    offset,\n",
    "    None,\n",
    "    11,\n",
    "    'Log',\n",
    "    'Tweedie',\n",
    "    ss_glm_power,\n",
    "    l2_lambda=0.1,\n",
    "    infeed_batch_size_limit=10000000,\n",
    "    fraction_of_validation_set=0.2,\n",
    "    stopping_rounds=2,\n",
    "    stopping_metric='deviance',\n",
    "    stopping_tolerance=0.001,\n",
    ")\n",
    "\n",
    "wrapped_model = WrapModel(model, True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "9360445c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Evaluation of the Tweedie Regressor and SS GLM on target PurePremium\n",
      "                          TweedieRegressor                       SSGLMRegressor                       \n",
      "subset                               train          test                  train                   test\n",
      "metric                                                                                                \n",
      "D² explained                  1.690000e-02  1.420000e-02          -0.0037646294          -0.0091564655\n",
      "mean Tweedie dev p=1.5000     7.640770e+01  7.640880e+01             176.430192             186.133364\n",
      "mean Tweedie dev p=1.7000     3.682880e+01  3.692270e+01              37.133654              37.771839\n",
      "mean Tweedie dev p=1.8000     3.037600e+01  3.045390e+01              28.902664              29.177016\n",
      "mean Tweedie dev p=1.9000     3.382120e+01  3.387830e+01              32.797254              32.954227\n",
      "mean Tweedie dev p=1.9900     2.015347e+02  2.015587e+02             202.995085             203.100356\n",
      "mean Tweedie dev p=1.9990     1.914538e+03  1.914387e+03            1936.521654            1936.609413\n",
      "mean Tweedie dev p=1.9999     1.904747e+04  1.904558e+04           19274.314292           19274.264006\n",
      "mean abs. error               2.739865e+02  2.731249e+02          219052.231473           243871.01343\n",
      "mean squared error            3.295505e+07  3.213056e+07  17046922373857.851562  20174170274251.140625\n"
     ]
    }
   ],
   "source": [
    "tweedie_powers = [1.5, 1.7, 1.8, 1.9, 1.99, 1.999, 1.9999]\n",
    "\n",
    "scores_ss_glm_pure_premium = score_estimator(\n",
    "    wrapped_model,\n",
    "    X_train,\n",
    "    X_test,\n",
    "    df_train,\n",
    "    df_test,\n",
    "    target=\"ClaimAmount\",\n",
    "    weights=None,\n",
    "    tweedie_powers=tweedie_powers,\n",
    ")\n",
    "\n",
    "scores = pd.concat(\n",
    "    [scores_glm_pure_premium, scores_ss_glm_pure_premium],\n",
    "    axis=1,\n",
    "    sort=True,\n",
    "    keys=(\"TweedieRegressor\", \"SSGLMRegressor\"),\n",
    ")\n",
    "print(\"Evaluation of the Tweedie Regressor and SS GLM on target PurePremium\")\n",
    "with pd.option_context(\"display.expand_frame_repr\", False):\n",
    "    print(scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "6eeeb8f1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "subset                                 train          test\n",
      "observed                        3.917618e+07  1.299546e+07\n",
      "predicted, tweedie, power=1.90  1.125080e+07  3.776321e+06\n",
      "predicted, ss glm, power=1.90   4.440852e+10  1.622137e+10\n"
     ]
    }
   ],
   "source": [
    "res = []\n",
    "for subset_label, x, df in [\n",
    "    (\"train\", X_train, df_train),\n",
    "    (\"test\", X_test, df_test),\n",
    "]:\n",
    "    exposure = df[\"Exposure\"].values\n",
    "    res.append(\n",
    "        {\n",
    "            \"subset\": subset_label,\n",
    "            \"observed\": df[\"ClaimAmount\"].values.sum(),\n",
    "            \"predicted, tweedie, power=%.2f\"\n",
    "            % 1.9: np.sum(exposure * wrapped_sm_model.predict(x)),\n",
    "            \"predicted, ss glm, power=%.2f\"\n",
    "            % ss_glm_power: np.sum(exposure * wrapped_model.predict(x)),\n",
    "        }\n",
    "    )\n",
    "\n",
    "print(pd.DataFrame(res).set_index(\"subset\").T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "a6a6d5c2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import auc\n",
    "\n",
    "\n",
    "def lorenz_curve(y_true, y_pred, exposure):\n",
    "    y_true, y_pred = np.asarray(y_true), np.asarray(y_pred)\n",
    "    exposure = np.asarray(exposure)\n",
    "\n",
    "    # order samples by increasing predicted risk:\n",
    "    ranking = np.argsort(y_pred)\n",
    "    ranked_exposure = exposure[ranking]\n",
    "    ranked_pure_premium = y_true[ranking]\n",
    "    cumulated_claim_amount = np.cumsum(ranked_pure_premium * ranked_exposure)\n",
    "    cumulated_claim_amount /= cumulated_claim_amount[-1]\n",
    "    cumulated_samples = np.linspace(0, 1, len(cumulated_claim_amount))\n",
    "    return cumulated_samples, cumulated_claim_amount\n",
    "\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 8))\n",
    "\n",
    "y_pred_total_ss_glm = wrapped_model.predict(X_test).reshape((-1,))\n",
    "y_pred_total = wrapped_sm_model.predict(X_test)\n",
    "\n",
    "for label, y_pred in [\n",
    "    (\"Compound Poisson Gamma\", y_pred_total),\n",
    "    (\"Compound Poisson Gamma SS GLM\", y_pred_total_ss_glm),\n",
    "]:\n",
    "    ordered_samples, cum_claims = lorenz_curve(\n",
    "        df_test[\"PurePremium\"], y_pred, df_test[\"Exposure\"]\n",
    "    )\n",
    "    gini = 1 - 2 * auc(ordered_samples, cum_claims)\n",
    "    label += \" (Gini index: {:.3f})\".format(gini)\n",
    "    ax.plot(ordered_samples, cum_claims, linestyle=\"-\", label=label)\n",
    "\n",
    "# Oracle model: y_pred == y_test\n",
    "ordered_samples, cum_claims = lorenz_curve(\n",
    "    df_test[\"PurePremium\"], df_test[\"PurePremium\"], df_test[\"Exposure\"]\n",
    ")\n",
    "gini = 1 - 2 * auc(ordered_samples, cum_claims)\n",
    "label = \"Oracle (Gini index: {:.3f})\".format(gini)\n",
    "ax.plot(ordered_samples, cum_claims, linestyle=\"-.\", color=\"gray\", label=label)\n",
    "\n",
    "# Random baseline\n",
    "ax.plot([0, 1], [0, 1], linestyle=\"--\", color=\"black\", label=\"Random baseline\")\n",
    "ax.set(\n",
    "    title=\"Lorenz Curves\",\n",
    "    xlabel=\"Fraction of policyholders\\n(ordered by model from safest to riskiest)\",\n",
    "    ylabel=\"Fraction of total claim amount\",\n",
    ")\n",
    "ax.legend(loc=\"upper left\")\n",
    "plt.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "615db9a8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  },
  "vscode": {
   "interpreter": {
    "hash": "de4c945f5346493decaa0ea82289843a7da2415616b96b9f4b104111cc0c19ad"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
